The present invention relates to a tone generator system which forms tone or sound waveform data by executing a sound waveform data forming program, using a general-purpose arithmetic processor such as a CPU or computer.
In many electronic musical instruments today, microprocessors are used to execute tone generating processing. In some cases, the microprocessors even execute such processing to impart effects to tone waveform sample data formed through the tone generating processing. It has long been common practice, in the art, to implement such microprocessors by dedicated hardware (for example, tone generator LSI or DSP) having a circuit structure depending on a particular tone generating method employed (for example, waveform memory or FM synthesis method).
However, thanks to the recent improvement of CPU's computing capability, electronic musical instruments have appeared where the CPU incorporated in a general-purpose computer or dedicated tone generating device is designed to execute a program describing predetermined steps of tone generating processing. Here, the tone generating device or method based on such a tone generating processing program will be called a "software tone generator", while the traditional tone generating device or method using the dedicated hardware will be called a "hardware tone generator".
The conventional software tone generators are arranged as application-level software. FIG. 22 illustrates an example configuration of software used for implementing such an application-level software tone generator. To minimize the programming complexity, this software is hierarchically organized as a composite of a plurality of minimum units (modules) that are programmable independently of each other. Specifically, programs on a highest level of the hierarchy are modules for creating MIDI messages which are in the form of application software such as sequencer software, game software and karaoke software.
In the illustrated example of FIG. 22, two forms of application software are provided, one of which is karaoke software installed in a karaoke player and the other of which is MIDI reproduction software installed in a MIDI player. The MIDI player prestores therein files of a multiplicity of karaoke music pieces in MIDI format, and it reads out one of the files for a selected one of the music pieces so as to output performance information of the selected music piece in MIDI message format. A software tone generator module is provided on a level following the karaoke software and includes, on its input side, a predetermined application programming interface ("API") for software tone generator. In the example of FIG. 22, the application programming interface (API) for software tone generator is shown as "SGM MIDI out API".
The software tone generator module comprises a program for forming tone waveform data on the basis of a MIDI message supplied via a dedicated software tone generator API such as the interface "SGM MIDI out API". As shown in FIG. 23, the software tone generator module includes a MIDI output driver section and a tone generator (or engine) section. The MIDI output driver section is a module for driving the tone generator section, which is responsive to the MIDI message to convert voice data into control parameters to control the tone generator section. The control parameters are sent to the tone generator section via predetermined inter-module interfaces (not shown). As the MIDI output driver section is initialized, a group of necessary waveform data are loaded from a given file and stored in a waveform data storage section. Using the group of waveform data and in accordance with the control parameters, the tone generator section generates tone waveform sample data (i.e., tone waveform data at successive sample points) of given musical characteristics such as pitch and tone color.
In a predetermined operating system (OS), such as Windows3.1 or Windows95 (trademark of Microsoft Corporation) employed in the computer, there is provided an interface for receiving and delivering formed waveform sample data (this interface may be "WAVE out API" in the case of Windows3.1). The output device is a driver module installed in the operating system (OS), which receives, via a predetermined interface such as the "WAVE out API", waveform sample data formed by the software tone generator module provided as application software and then outputs the formed sample data to external hardware. For example, the output device comprises software which, via a direct memory access (DMA) controller, reads out waveform sample data formed through processing by the software tone module and stored in a storage device such as a hard disk and then outputs the read-out sample data to the external hardware such as a digital/analog converter (DAC).
The MIDI player shown in FIG. 22 is of a type which has MIDI reproduction and software tone generator modules previously installed therein. The MIDI reproduction module reads out a standard MIDI file (SMF) so as to reproduce MIDI messages. Each of the reproduced MIDI messages is processed by the software tone generator module so as to form tone waveform sample data corresponding to the MIDI message in a similar manner to the above-mentioned. The tone waveform sample data thus formed by the software tone generator module in the MIDI player is sent via a predetermined interface such as the "WAVE out API" to the output device for further processing and then output to the external hardware such as the digital/analog converter (DAC).
In the computer operating system, there is also provided an interface for receiving and delivering performance information (typically, MIDI message) on the basis of which waveform sample data is to be formed (this interface may be "MIDI API" in the case where Windows3.1 is employed). With such an interface, software that outputs a MIDI message can be used as application software, as shown by way of example in FIG. 24. In the example of FIG. 24, game software, game software, multimedia software, etc. are provided, so that various game effect sounds, background music sounds, MIDI data or performance information of automatic sequence performance sounds can be output from these software in the form of MIDI messages. Each of such MIDI messages is received by the operating system (OS) via a predetermined interface such as the "MIDI API" and then passed to a MIDI driver. The MIDI driver supplies an external hardware tone generator with tone forming data based on the passed MIDI message, and the external hardware tone generator, in turn, forms tone waveform sample data on the basis of the tone forming data using a predetermined tone generating hardware device.
However, the conventionally-known application-level software tone generators as mentioned above are unable to receive data from the interface (such as the MIDI API) for receiving and delivering performance information to execute waveform sample data forming processing on the basis of the received data, although they can output formed waveform sample data to a predetermined interface (such as the WAVE out API) of the operating system.
Thus, in the past, it was impossible to simply combine the performance information (MIDI message) generating software, such as game software, sequencer software or multimedia software, with the application-level software tone generator via the computer operating system. Therefore, in order to allow such performance information (MIDI message) generating software to be applied to the computer operating system and simply used therewith, an expensive hardware tone generator was absolutely needed.
In cases where the tone generating processing is executed on the basis of performance information such as a MIDI message, it is quite rare for the computer to execute the tone generating processing alone; mostly, the computer runs one or more other software programs concurrently or in parallel with the tone generating processing under the control of the same operating system. For example, when running game software, it may be necessary for the computer to execute other processing, such as for generating animated pictures, in parallel with sound generating processing, or when running karaoke software, it may be necessary for the computer to execute processing for generating a visual display of words of a song or background images. If a software tone generator is used, the computer executes the software tone generator program and other necessary software program in a parallel fashion under the control of the same OS. In such a case, in order to assure that the tone waveform sample data forming processing be executed by the software tone generator without being influenced by the other processing, it is desirable to execute the tone generating processing on an operating system having a full multitask function (such as Windows95).
However, in fact, operating systems not having a full multitask function (such as Windows3.1) have also been widely used today, and there exists an increasing need to execute the tone generating processing on such operating systems not having a full multitask function. With the operating systems not having a full multitask function, generation of tones may be hindered by the execution of the tone generating processing being delayed due to the other processing, or execution of the other processing may be delayed by the tone generating processing taking too much time. In particular, if a software tone generator is applied to application software that was used with a hardware tone generator alone and hence did not present the above-discussed problems associated with the parallel processing, it is desirable to previously consider appropriate means or counterplans to obviate the problems that could arise from the parallel processing by the computer.